package main

import (
	"fmt"
	"math/rand"
)

/*作业一 九九乘法表*/

func JiuJiu() {
	for i := 1; i <= 9; i++ {
		for j := 1; j <= i; j++ {
			// fmt.Printf("%d*%d=%d ", j, i, i*j)
			// fmt.Printf("%2d *%2d = %2d ", j, i, j*i)
			fmt.Printf("%v * %v = %v \t", j, i, j*i)
		}
		fmt.Println()

	}
}

/*作业二 随机生成20以内的20个非0正整数，打印出来。对生成的数值，第单数个（不是索引）累加求和，第
偶数个累乘求积。打印结果，*/

func RangNumber() {
	// fmt.Println("-------------------------------------------------")
	// // Rand对象
	// r := rand.New(rand.NewSource(time.Now().Unix()))
	// fmt.Println(r.Int())       // int随机值，返回值为int
	// fmt.Println(r.Intn(100))   // [0,100)的随机值，返回值为int
	// fmt.Println(r.Int31())     // 31位int随机值，返回值为int32
	// fmt.Println(r.Int31n(100)) // [0,100)的随机值，返回值为int32
	// fmt.Println(r.Float32())   // 32位float随机值，返回值为float32
	// fmt.Println(r.Float64())   // 64位float随机值，返回值为float64
	// fmt.Println("----------------扩展性知识-------------------------")

	// 待扩展知识，伪随机数和真随机数
	// 未设定种子数而产生的随机数是固定数，下面的代码，无论执行多少次，输出结果都是一样的(这里有版本限定要求,go version go1.21.0 darwin/arm64没有了)
	// fmt.Println(rand.Int())
	// fmt.Println(rand.Int())

	//方法一
	var trapz, sum, x int = 0, 1, 19
	for i := 1; i < x+2; i++ {
		// fmt.Println(rand.Intn(20))
		sr := rand.Intn(x) + 1
		//判断奇偶数
		if sr%2 == 1 {
			trapz = trapz + sr

		} else {
			sum *= sr
		}

	}
	fmt.Printf("随机生成20以内的20个非0正整数, 奇数求和: %v,偶数求积为%: %v", trapz, sum)
	// 问题显示乘积有问题

}

/*作业三 打印100以内的斐波那契数列*/
// 原理 一组非常特殊的数字：1，1，2，3，5，8，13，21，34，55，89，144，……不难发现，从第三个数起，每个数都是前两个数之和，这个数列称为斐波那契数列 [3]。
// 递推公式为：Fn=Fn-1+Fn-2，其中F1=F2=1
// fibonacci 函数会返回一个返回 int 的函数。
func fibonacci() func() int {
	x1, x2 := 0, 1
	sum := 0
	return func() int {
		sum = x1 + x2
		x1 = x2
		x2 = sum
		return sum
	}
}

func Fibonacci() {
	f := fibonacci()
	for i := 0; i < 100; i++ {

		if f() > 100 {
			break

		} else {

			fmt.Print(f(), ", ")
		}

	}

}

func main() {
	fmt.Println("-------作业一---------")
	JiuJiu()
	fmt.Println("--------作业二--------")
	RangNumber()
	fmt.Println("--------作业三--------")
	Fibonacci()
}

// 阿飞老师的批改
// 1. 第二题逻辑错误导致输出格式错误，不是判断随机数的奇偶；
// 2. 第三题不符合要求
